<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>完美数</title>
  <script>
    // 1. 使用函数方法书写一段程序， 判断一个数是不是完美数。
    // 如果一个数恰好等于它的因数之和， 则称该数为“ 完美数”。
    // 例如： 第1个完全数是6， 它有因数1、 2、 3、 6， 除去它本身6外， 其余3个数相加， 1 + 2 + 3 = 6。
    function problem1(x) {
      //判断num是否是大于1的正整数
      if (x % 1 === 0 && x > 1) {
        if (szqh(qbys(x)) === x) {
          console.log(x + '是完美数');
        } else {
          console.log(x + '不是完美数');
        }
      } else {
        //num不是大于1的正整数抛出错误
        console.log('您输入有误，请重新输入');
      }
    }
    problem1(6);


    //功能：求参数的全部约数（包括1但不包括自身）
    // 参数：正整数
    function qbys(x) {
      // 创建约数数组
      var ys = [];
      //循环
      for (let i = 1; i <= x / 2; i++) {
        //满足约数条件添加进数组
        if (x % i === 0) {
          ys.push(i);
        }
      }
      //返回数组
      return ys;
    }

    //功能：数组求和
    //参数：纯整数类型数组
    function szqh(x) {
      //累加器
      var he = 0;
      //循环
      for (let i = 0; i < x.length; i++) {
        //累加
        he += x[i];
      }
      //返回累加器
      return he;
    }
  </script>
</head>

<body>

</body>

</html>